package ar.edu.utn.frba.tacs.warnes.aop;

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.math.BigDecimal;
import java.util.Date;

import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;

/**
 * Clase usada para logueo
 * 
 * @author Diego
 * 
 */
public abstract class Utils {

	public static void loguear(String s) {
		System.out.println(new Date(System.currentTimeMillis()) + ": " + s);
	}

	@SuppressWarnings("deprecation")
	public static Date crearFecha(String fecha) {
		String[] sp = fecha.split("/");
		return new Date(Integer.valueOf(sp[2]), Integer.valueOf(sp[1]), Integer
				.valueOf(sp[0]));
	}

	public static void logEnArchivo(String string, Long id) {
		FileOutputStream archivo;
		PrintStream p = null;
		try {
			String ruta = ContenedorWarnes.getInstance().getRutaLog();
			
			if (ruta == null || "".equals(ruta)) {
				//Si no se especifico nunca ruta, se usa C: por defecto
				ruta = "C:\\";
			} else {
				File fileToCreate = new File(ruta);
				//Si el directorio elegido no existe, lo creo
				if(!fileToCreate.canRead())
					fileToCreate.mkdirs();
			}
			
			archivo = new FileOutputStream(ruta+"warnesLog.txt",true);
			p = new PrintStream(archivo);

			StringBuffer sb = new StringBuffer();
			sb.append("[" + new Date(System.currentTimeMillis()) + "],");
			sb.append("[" + id + "],");
			sb.append("[" + string + "]");
			p.println(sb);

			p.flush();
			p.close();
		} catch (Exception e) {
			loguear("<<<< ERROR LOGUEO >>>> "+e.getMessage());
		} 
	}

	public static Float parseFloatTo2DecimalesHalfUp(Float value) {
		BigDecimal bd = new BigDecimal(value);
		double valueRedondeado = bd.setScale(2, BigDecimal.ROUND_HALF_UP)
				.doubleValue();
		return new Float(valueRedondeado);
	}
}
